package com.wang.interview.tests.lambda;

/**
 * @author: wang
 * @date: 2021/8/7 21:10
 * @description: 这个栗子有问题，延迟运行指的是，在实际调用到lambda方法时，lambda内的代码才会真正开始执行，如传入的参数必须要先被处理，但是传入
 *                    又不一定会被使用，这时将参数的处理转到lambda中处理就好了，只有在真正访问lambda时才会处理参数，避免了性能浪费
 */
public class LazyLambda {
    public void cal(){
        for (int i = 0; i < 10; i++) {
            System.out.println("hh");
        }
    }
    public String tt(A<String> a, String str){
        String s = a.get(str);
        cal();
        return s;
    }

    public static void main(String[] args) {
        LazyLambda lazyLambda = new LazyLambda();
        String res = lazyLambda.tt(str -> {
            System.out.println(str);
            return str + "——666";
        }, "不愧是我");
    }

}

@FunctionalInterface
interface A<T>{
    T get(T t);
}

